import type { Todo, TodoItem } from "../index";

let id = 4;

export default {
  namespaced: true,
  state: {
    todoList: [
      { id: 1, name: "洗脚", isDone: true },
      { id: 2, name: "打王者", isDone: false },
      { id: 3, name: "按摩", isDone: false },
    ],
  },
  // getters: {
  //   // 已完成数量
  //   isDoneNum(state: Todo) {
  //     return state.todoList.reduce((p, c) => p + (c.isDone ? 1 : 0), 0);
  //   },
  //   // 总数
  //   total(state: Todo) {
  //     return state.todoList.length;
  //   },
  // },
  actions: {},
  mutations: {
    // 添加todo
    ADD_TODO(state: Todo, name: string) {
      state.todoList.push({
        id: id++,
        name,
        isDone: false,
      });
    },
    // 更新isDone
    UPDATE_IS_DONE(state: Todo, id: number) {
      const todo = state.todoList.find((todo) => todo.id === id) as TodoItem;
      todo.isDone = !todo.isDone;
    },
    // 删除todo
    DEL_TODO(state: Todo, id: number) {
      state.todoList = state.todoList.filter((todo) => todo.id !== id);
    },
    UPDATE_ALL_TODO(state: Todo, isDone: boolean) {
      state.todoList.forEach((todo) => (todo.isDone = isDone));
    },
    DEL_DONE_TODO(state: Todo) {
      state.todoList = state.todoList.filter((todo) => !todo.isDone);
    },
  },
};
